package com.resifind.www.service;

import com.resifind.www.exception.Resp;
import com.resifind.www.po.Client;
import com.resifind.www.po.Merchant;

import java.util.List;

/**
 * @author 36069
 */
public interface BlacklistFavourService {

    /**
     * 拉黑商户
     * <p>
     * 不能重复拉黑
     * </p>
     *
     * @param clientId   客户id
     * @param merchantId 商户id
     * @return 返回拉黑结果
     */
    Resp<String> blackMerchant(int clientId, int merchantId);

    /**
     * 拉黑租户
     * <p>
     * 不能重复拉黑；
     * 判断是否有不合法订单，有则不能拉黑
     * </p>
     *
     * @param clientId   客户id
     * @param merchantId 商家id
     * @return 返回拉黑结果
     */
    Resp<String> blackClient(int clientId, int merchantId);

    /**
     * 客户端查询黑名单
     *
     * @param clientId 客户id
     * @return 黑名单商家集合
     */
    Resp<List<Merchant>> queryBlackList(int clientId);

    /**
     * 商户端查询黑名单
     *
     * @param merchantId 商家id
     * @return 黑名单客户集合
     */
    Resp<List<Client>> queryBlacklist(int merchantId);

    /**
     * 取消拉黑
     * <p>
     * 根据用户类型判断操作方，删除对应黑名单记录
     * </p>
     *
     * @param id       操作方id
     * @param ids      删除的id集合
     * @param userType 用户类型
     * @return 返回取消拉黑结果
     */
    Resp<String> cancelBlack(int id, List<Integer> ids, String userType);

    /**
     * 收藏商户
     * <p>
     * 不能重复收藏
     * </p>
     *
     * @param clientId   客户id
     * @param merchantId 商户id
     * @return 返回收藏结果
     */
    Resp<String> favourMerchant(int clientId, int merchantId);

    /**
     * 查询收藏的商户
     *
     * @param clientId 客户id
     * @return 收藏的商户集合
     */
    Resp<List<Merchant>> queryFavourMerchant(int clientId);

    /**
     * 取消收藏商户
     *
     * @param clientId   客户id
     * @param merchantId 商户id
     * @return 返回取消收藏结果
     */
    Resp<String> cancelFavour(int clientId, int merchantId);
}
